package cn.sytton.taffe.framework.base.service;

import cn.sytton.taffe.framework.base.entity.PageParam;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;

/**
 * 服务层接口基类
 *
 * @author skyrock
 */
public interface IBaseService<T> extends IService<T> {
    /**
     * 查询分页数据,调用mapper.findListOfXml方法
     * @param pp
     * @return
     */
    PageInfo<T> findListPageOfXml(PageParam pp);

    /**
     * 查询分页数据,调用mybatis-plus.listByMap
     * @param pp
     * @return
     */
    PageInfo<T> findPage(PageParam pp);

    /**
     * 根据主键查询
     * @param id
     * @return
     */
    T findById(String id);

    /**
     * 添加实体
     * @param entity
     */
    void create(T entity);

    /**
     * 更新实体
     * @param entity
     */
    void update(T entity);

    /**
     * 添加或者更新实体
     * @param entity
     */
    void createOrUpdate(T entity);

    /**
     * 更新部分字段, 并且更新updatedTime, updatedUserId
     * @param updateWrapper
     */
    void updateWithUpdateField(Wrapper<T> updateWrapper);

    /**
     * 删除数据
     * @param ids
     */
    void delete(String... ids);
}
